package cc.rengu.oltp.service.common.dao;

import cc.rengu.oltp.service.common.entity.ChannelCallCfg;

import java.util.List;

/**
 * 交易通道服务调用配置表操作接口类
 * Created by wangcheng on 2021/2/25 17:03
 */
public interface ChannelCallCfgMapper {
    /**
     * 登记通道服务调用配置表
     *
     * @param channelCallCfg 通道服务调用配置信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int insertChannelCallCfg(ChannelCallCfg channelCallCfg) throws Exception;

    /**
     * 根据主键更新通道服务调用配置表
     *
     * @param channelCallCfg 通道服务调用配置信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int updateChannelCallCfgByPrimaryKey(ChannelCallCfg channelCallCfg) throws Exception;

    /**
     * 根据业务主键查询通道配置信息
     *
     * @param instId     多法人标识
     * @param primaryKey 业务主键：源系统标识+内部交易码+业务细分+调用序号+业务场景+调用通道标识
     * @return 通道服务调用配置信息
     * @throws Exception 异常
     */
    ChannelCallCfg selectChannelCallCfgByPrimaryKey(String instId, String primaryKey) throws Exception;

    /**
     * 根据业务场景及调用序号查询通道服务调用配置信息
     *
     * @param instId         多法人标识
     * @param msgSrcId       源系统标识
     * @param transChannelId 交易渠道标识
     * @param txnNum         内部交易码
     * @param bizType        业务细分
     * @param bizScene       业务场景
     * @param callIndex      调用序号
     * @return 通道服务调用配置信息
     * @throws Exception 异常
     */
    List<ChannelCallCfg> selectChannelCallCfgByBizSceneAndCallIndex(String instId, String msgSrcId, String transChannelId, String txnNum, String bizType, String bizScene, String callIndex) throws Exception;

    /**
     * 根据交易码查询通道服务调用配置信息
     *
     * @param instId         多法人标识
     * @param msgSrcId       源系统标识
     * @param transChannelId 交易渠道标识
     * @param txnNum         内部交易码
     * @param bizType        业务细分
     * @return 通道服务调用配置信息
     * @throws Exception 异常
     */
    List<ChannelCallCfg> selectChannelCallCfgByTxnNum(String instId, String msgSrcId, String transChannelId, String txnNum, String bizType) throws Exception;

    /**
     * 加载交易通道服务调用配置信息
     *
     * @param dbPoolCacheNodeName 数据库连池缓存节点名
     * @param instId              多法人标识
     * @param msgSrcId            源系统标识
     * @param transChannelId      交易渠道标识
     * @param txnNum              内部交易码
     * @param bizType             业务细分
     * @return 通道服务调用配置信息
     * @throws Exception 异常
     */
    List<ChannelCallCfg> loadChannelCallCfg(String dbPoolCacheNodeName, String instId, String msgSrcId, String transChannelId, String txnNum, String bizType) throws Exception;
}
